﻿@model DHQGHN.PM0.Models.Admin.MenuModel
@{
    var lstApp = new SelectList(
       new List<Object>{
                       new { value = 0 , text = "Red"  },
                       new { value = 1 , text = "Blue" },
                       new { value = 2 , text = "Green"}
                    }
         ,
       "value",
       "text",
        0);
}

@Html.ValidationSummary(false)
@using (
    Html.BeginForm(
        actionName: "actionCreateOrUpdateMenu", controllerName: "Menu", routeValues: new { }, method: FormMethod.Post, htmlAttributes: new { @id = "menu-form", @class = "form-inline", @role = "form", @style = "width: 100%;" }
        )
    )
{
    <div class="modal-body min-width">
        <div class="form-group">
            @Html.AntiForgeryToken()
            @Html.HiddenFor(m => m.MenuId)
            @Html.ValidationMessageFor(m => m.MenuId, null, new { @class = "Validation_Error" })
            <div>
                @Html.LabelFor(m => m.MenuName, new { @class = "labels", style = "width:130px;" })<span class="field-validation-error"> * </span>
                @Html.TextBoxFor(m => m.MenuName, new { @class = "TextBoxContent", @placeholder = "" })
                @Html.ValidationMessageFor(m => m.MenuName, null, new { @class = "Validation_Error", @id = "CheckName", @style = "color:red;" })
            </div>
            <div style="margin-top:4px;">
                @Html.LabelFor(m => m.MenuCode, new { @class = "labels", style = "width:130px;" })<span class="field-validation-error"> * </span>
                @Html.TextBoxFor(m => m.MenuCode, new { @class = "TextBoxContent", @placeholder = "" })
                @Html.ValidationMessageFor(m => m.MenuCode, null, new { @class = "Validation_Error", @id = "CheckCode", @style = "color:red;" })
            </div>
            <div style="margin-top:4px;">
                @Html.LabelFor(m => m.MenuUrl, new { @class = "labels", style = "width:130px;" })<span class="field-validation-error"> * </span>
                @Html.TextBoxFor(m => m.MenuUrl, new { @class = "TextBoxContent", @placeholder = "" })
                @Html.ValidationMessageFor(m => m.MenuUrl, null, new { @class = "Validation_Error", @id = "CheckMenuUrl", @style = "color:red;" })
            </div>
            <div style="margin-top:4px;">
                @Html.LabelFor(m => m.MenuOrder, new { @class = "labels", style = "width:130px;" })<span class="field-validation-error"> * </span>
                @Html.TextBoxFor(m => m.MenuOrder, new { @class = "TextBoxContent", @placeholder = "" })
                @Html.ValidationMessageFor(m => m.MenuOrder, null, new { @class = "Validation_Error", @id = "CheckMenuOrder", @style = "color:red;" })
            </div>
            <div style="margin-top:4px;">
                @Html.LabelFor(m => m.ClassName, new { @class = "labels", style = "width:130px;" })<span class="field-validation-error"> &nbsp; </span>
                @Html.TextBoxFor(m => m.ClassName, new { @class = "TextBoxContent", style = "margin-left: 2px;", @placeholder = "" })
                @Html.ValidationMessageFor(m => m.ClassName, null, new { @class = "Validation_Error" })
            </div>
            <div style="margin-top:4px;">
                @Html.LabelFor(m => m.AppId, new { @class = "labels", style = "width:130px;" })<span class="field-validation-error"> * </span>
                @Html.DropDownListFor(m => m.AppId, new SelectList(ViewBag.lstApp, "value", "text", 0), new { @class = "SelectBoxContent", @placeholder = "", @style = "width: 320px !important;margin-left: 0px;" })
                @Html.ValidationMessageFor(m => m.AppId, null, new { @class = "Validation_Error" })
            </div>
            <div id="parrentList" style="margin-top:2px;">
                @Html.LabelFor(m => m.ParentMenuId, new { @class = "labels", style = "width:132px;" })<span class="field-validation-error"> &nbsp; </span>
                @Html.DropDownListFor(m => m.ParentMenuId, new SelectList(ViewBag.lstMenu, "value", "text", 0), new { @class = "SelectBoxContent", @placeholder = "", @style = "width: 320px !important;margin-left: 0px;" })
            </div>
            <div style="margin-top:2px;">
                @Html.LabelFor(m => m.MenuDescription, new { @class = "labels", style = "width:130px;" })<span class="field-validation-error"> &nbsp; </span>
                @Html.TextAreaFor(m => m.MenuDescription, new { @style = "vertical-align:top; height:140px;", @class = "TextAreaContent", @placeholder = "", @cols = 80, @rows = 10 })
                @Html.ValidationMessageFor(m => m.MenuDescription, null, new { @class = "Validation_Error" })
            </div>
        </div>
    </div>
}

<div id="overlay" class="web_dialog_overlay"></div>
@Scripts.Render("~/bundles/jqueryval")
<script>
    @functions{
            public string GetAntiForgeryToken()
            {
                string cookieToken, formToken;
                AntiForgery.GetTokens(null, out cookieToken, out formToken);
                return cookieToken + "," + formToken;
            }
        }
</script>
<script>
    var $menuForm = $("#menu-form");

    function save() {
        var menuname = $('#MenuName');
        var menucode = $('#MenuCode');
        var menuurl = $('#MenuUrl');
        var appid = $('#AppId').val();
        var menuid = $('#MenuId').val();
        menuname = menuname != null ? menuname.val().trim() : "";
        menucode = menucode != null ? menucode.val().trim() : "";
        menuurl = menuurl != null ? menuurl.val().trim() : "";

        var result = false;
        //Kiem trung truoc khi them moi/cap nhat
        if ($menuForm.valid()) {
            var token = '@GetAntiForgeryToken()';
            $.ajax("/Menu/checkMenuExist", {
                type: "post",
                contentType: "application/json",
                data: JSON.stringify({ model: { MenuName: menuname, MenuCode: menucode, AppId: appid, MenuUrl: menuurl, MenuId: menuid } }),
                dataType: "json",
                async: false,
                headers: {
                    'VerificationToken': token
                },
                success: function (response) {
                    if (response.status == 200) {
                        if (response.result == true) {
                            warning('Chức năng đã tồn tại. Hãy kiểm tra lại thông tin!', 'Trùng thông tin chức năng');
                            //return false;
                        } else {
                            //Neu chua ton tai Chuc nang thi goi action them moi/cap nhat
                            $.ajax({
                                type: "POST",
                                url: $menuForm.attr('action'),
                                data: $menuForm.serialize(),
                                dataType: '',//chú ý là form đặc biệt thì phải điền trường này,
                                async: false,
                                //headers: {
                                //    'VerificationToken': token
                                //},
                                success: function (response) {
                                    if (response != null && response.status == 200) {
                                        OnCriteria(crrPageIndex);
                                        window.notice(response.result, window.notice_success);
                                        result = true;
                                    } else {
                                        window.notice(response.result, window.notice_error);

                                    }
                                }
                            });
                        }
                    }
                }
            });
        }
        return result;
    }

    function checkName() {
        var gan;
        if ($('#AppId').val() == 0)
            ganAppId = "";
        else
            ganAppId = $('#AppId').val();

        $.ajax({
            type: "Get",
            url: '@Url.Action("CheckExistName", "Menu")',
            data: { MenuName: $('#MenuName').val(), MenuId: $('#MenuId').val(), AppId: ganAppId },
            dataType: '',//chú ý là form đặc biệt thì phải điền trường này
            async: false,
            headers: {
                'VerificationToken': '@GetAntiForgeryToken()'
            },
            success: function (response) {
                if (response == false) {
                    $("#CheckName").empty();
                    $("#CheckName").append('Tên chức năng đã tồn tại');
                    gan = false;
                }
                else {
                    $("#CheckName").empty();
                    $("#CheckName").append("");
                    gan = true;
                }
            }
        });
        return gan;
    }

    function checkCode() {
        var gan;
        var ganAppId;

        if ($('#AppId').val() == 0)
            ganAppId = "";
        else
            ganAppId = $('#AppId').val();

        $.ajax({
            type: "Get",
            url: '@Url.Action("CheckExistCode", "Menu")',
            data: { MenuCode: $('#MenuCode').val(), MenuId: $('#MenuId').val(), AppId: ganAppId },
            dataType: '',//chú ý là form đặc biệt thì phải điền trường này
            async: false,
            headers: {
                'VerificationToken': '@GetAntiForgeryToken()'
            },
            success: function (response) {
                if ($('#IDrole').val() != "") {
                    if (response == false) {
                        $("#CheckCode").empty();
                        $("#CheckCode").append('Mã chức năng đã tồn tại');
                        gan = false;
                    }
                    else {
                        $("#CheckCode").empty();
                        $("#CheckCode").append("");
                        gan = true;
                    }
                }
            }
        });
        return gan;
    }

    function checkMenuUrl() {
        var gan;
        if ($('#AppId').val() == 0)
            ganAppId = "";
        else
            ganAppId = $('#AppId').val();

        $.ajax({
            type: "Get",
            url: '@Url.Action("CheckExistMenuUrl", "Menu")',
            data: { MenuUrl: $('#MenuUrl').val(), MenuId: $('#MenuId').val(), AppId: ganAppId, ParentMenuId: $('#ParentMenuId').val() },
            dataType: '',//chú ý là form đặc biệt thì phải điền trường này
            async: false,
            headers: {
                'VerificationToken': '@GetAntiForgeryToken()'
            },
            success: function (response) {
                if ($('#IDrole').val() != "") {
                    if (response == false) {
                        $("#CheckMenuUrl").empty();
                        $("#CheckMenuUrl").append('Đường dẫn chức năng đã tồn tại');
                        gan = false;
                    }
                    else {
                        $("#CheckMenuUrl").empty();
                        $("#CheckMenuUrl").append("");
                        gan = true;
                    }
                }
            }
        });
        return gan;
    }

    function checkMenuOrder() {
        var gan;
        var menuOrder;

        if ($('#MenuOrder').val() == "")
            menuOrder = "";
        else
            menuOrder = $('#MenuOrder').val();

        if (Number.isInteger(menuOrder) && menuOrder > 0) {
            $("#CheckMenuOrder").empty();
            $("#CheckMenuOrder").append("");
            gan = true;
        }
        else {
            $("#CheckMenuOrder").empty();
            $("#CheckMenuOrder").append('thứ tự nhập không hợp lệ');
            gan = false;
        }

        return gan;

        @*$.ajax({
            type: "Get",
            url: '@Url.Action("CheckExistCode", "Menu")',
            data: { MenuCode: $('#MenuCode').val(), MenuId: $('#MenuId').val(), AppId: ganAppId },
            dataType: '',//chú ý là form đặc biệt thì phải điền trường này
            async: false,
            headers: {
                'VerificationToken': '@GetAntiForgeryToken()'
            },
            success: function (response) {
                if ($('#IDrole').val() != "") {
                    if (response == false) {
                        $("#CheckCode").empty();
                        $("#CheckCode").append('Mã chức năng đã tồn tại');
                        gan = false;
                    }
                    else {
                        $("#CheckCode").empty();
                        $("#CheckCode").append("");
                        gan = true;
                    }
                }
            }
        });
        return gan;*@
    }

    $('#AppId').change(function () {

        if ($('#AppId').val() == 0) {
            $("#CheckName").empty();
            $("#CheckName").append("");
            $("#CheckCode").empty();
            $("#CheckCode").append("");
            $("CheckMenuUrl").empty();
            $("CheckMenuUrl").append("");
        }
        else {
            $("#CheckCode").empty();
            $("#CheckCode").append("");
            $("#CheckName").empty();
            $("#CheckName").append("");
            $("CheckMenuUrl").empty();
            $("CheckMenuUrl").append("");
        }

        var appid = $('#AppId').val();
        //alert(appid);
        var $catlist = $('#parrentList');
        $.ajax({
            dataType: "json",
            type: "POST",
            //type: "GET",
            url: '/Menu/GetMenuByParentID',
            contentType: "application/json",
            //data: { key: ctrSearch, departmentId: ctrdepartmentId, pageIndex: pageIndex },
            data: JSON.stringify({ strAppID: appid }),
            success: function (data) {
                var result = '';
                for (var i = 0, iL = data.length; i < iL; i++) {
                    result += '<option value="' + data[i].Value + '">' + data[i].Text + '</option>';
                }
                $("#ParentMenuId").html(result);
            }
        });
    });
</script>